using System.Collections;
using System.Collections.Generic;
using Unity.Burst;
using Unity.Entities;
using Unity.Mathematics;
using Unity.Transforms;
using UnityEngine;
using static UnityEngine.GraphicsBuffer;

[BurstCompile]  // 作业也使用Burst编译
[WithAll(typeof(MoveDataTag))]  // 只处理包含MoveToTargetTag的实体
public partial struct MoveJob : IJobEntity  // IJobEntity自动迭代匹配实体
{

    public float DeltaTime;  // 时间增量，从系统传递到作业

    [BurstCompile]
    private void Execute(  // 对每个匹配的实体执行此方法
        ref LocalTransform transform,// 引用：需要修改的位置信息
        ref MoveDataTag moveData,            // 引用：需要更新的移动数据  
        in TargetTag target,                 // 只读：目标信息
        in SpeedTag speed )     // 只读：移动属性
    {
        //// 计算从当前位置指向目标的向量
        //float3 toTarget = target.Position - transform.Position;

        //// 计算到目标的欧几里得距离（向量长度）
        //float distance = math.length(toTarget);

        //// 更新移动数据中的距离信息（可用于UI显示或其他系统）
        //moveData.DistanceToTarget = distance;

        //// 将方向向量归一化（长度为1），便于速度控制
        //float3 direction = math.normalize(toTarget);
        //moveData.Direction = direction;    // 保存方向用于其他系统
        //moveData.IsMoving = true;          // 设置移动状态

        //// 计算本帧应该移动的向量：方向 × 速度 × 时间
        //float3 movement = direction * speed.Speed * DeltaTime;

        //// 应用移动：更新实体的世界位置
        transform.Position += 1;
        
    }
}

